/**业务管理流程平台版本1.0,生成时间:2017-04-13 13:16:48**/
package com.xbdun.service.bmp.biz;

import java.math.BigDecimal;
import java.util.Map;

import com.xbdun.common.page.Pager;
import com.xbdun.dao.bmp.entity.XbdunSysUserDo;
import com.xbdun.facade.bmp.response.system.SysUserResponse;


/**
 * 平台用户信息
 * @ClassName XbdunSysUserService
 * @author 张国涛
 * @2017-04-13 13:16:48
 */
public interface SysUserBiz {
	
	/**
	 * 根据主键获取对象
	 * @return {@link XbdunSysUserDo}
	 */
	public XbdunSysUserDo getByUserCode(long userCode)throws RuntimeException;
	
	/**
	 * 新增
	 * @param XbdunSysUserDo 
	 * @param mobile 电话号码
	 */
	/**
	* @Title: addXbdunSysUser
	* @Description: 不存在用户就新增，存在则条件修改用户的wxid
	* @param xbdunSysUserDo	平台用户基本信息，用户编号方法内部会自动设置
	* @param mobile	用户电话
	* @throws RuntimeException    设定文件
	* @return boolean    返回类型
	 */
	public XbdunSysUserDo getSysUserOrCreate(XbdunSysUserDo xbdunSysUserDo, String mobile) throws RuntimeException;
	
	/**
	 * 删除数据XbdunSysUserDo根据主键
	 * @param userCode 主键
	 */
	public void delByUserCode(long userCode)throws RuntimeException;
	
	/**
	 * 判断是否存在,不为null则是存在
	 * @param id 主键
	 * @return Long
	 */
	public boolean existById(long id)throws RuntimeException;
	
	/**
	* @Title: getByIdCard
	* @Description: 根据身份证获取用户编号
	* @param idCard	身份证号
	* @return Long    返回类型
	 */
	public Long getByIdCard(String idCard)throws RuntimeException;
	
	/**
	* @Title: getUserCodeByUnion
	* @Description: 根据用户的UnionId 获取用户的用户编号
	* @param unionId
	* @return
	* @throws RuntimeException    设定文件
	* @return Long    返回类型
	 */
	public Long getUserCodeByUnion(String unionId)throws RuntimeException;
	/**
	 * 更新对象属性
	 * @param xbdunSysUserDo	更新对象
	 * @param id			对象主键
	 */
	public void updateById(XbdunSysUserDo xbdunSysUserDo,long id)throws RuntimeException;
	
	/**
	 * 查询分页
	 * @param where			约束条件,键是对象属性其中条件都为and连接
	 * @param orderBy		排序条件
	 * @param pageNum   	当前索引页
	 * @param numPerPage	每页显示条数
	 * @return {@link Pager}
	 * @throws RuntimeException
	 */
	public Pager<XbdunSysUserDo> queryPager(Map<String,Object> where,String orderBy,int pageNum,int numPerPage);
	
	/**
	* @Title: existUnionId
	* @Description: 判断微信小程序的UnionId是否已经存在
	* @param unionId 用户的唯一值
	* @return boolean    返回类型
	 */
	public boolean existUnionId(String unionId)throws RuntimeException;

	/**
	* @Title: getSysUserLoginOrCreate
	* @Description: 平台用户登录且创建
	* @param xbdunSysUserDo    设定文件
	* @return SysUserResponse    返回类型
	 */
	public SysUserResponse getSysUserLogin(XbdunSysUserDo xbdunSysUserDo)throws Exception;

	/**
	* @Title: updateUserUnionId
	* @Description: 修改用户信息
	* @param userCode	用户编号
	* @param unionId	用户的微信UionId
	* @param openId		用户的OpenId
	* @param latitude	经度
	* @param longitude  维度
	* @return int    返回类型
	 */
	public int updateUserByInvite(long userCode,String unionId,String openId,BigDecimal latitude,BigDecimal longitude);
}